package com.aura.common.core.utils;


import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;

/**
 * @ClassName BeanCopyUtil
 * @Description Bean属性拷贝工具类
 * @Author ZJX
 * @Date 2025/7/15 23:35
 * @Version 1.0
 **/
public class BeanCopyUtil extends BeanUtils {

    /**
     * 集合类型 数据的拷贝
     * @param sourceList 数据源类
     * @param target 目标类::new(eg: UserVO::new)
     * @return 拷贝结果
     * @param <S> 源目标类型
     * @param <T> 目标对象类型
     */
    public static <S, T> List<T> copyListProperties(List<S> sourceList, Supplier<T> target) {
        List<T> targetList = new ArrayList<>(sourceList.size());
        for (S source : sourceList) {
            T t = target.get(); // 目标对象
            copyProperties(source, t); // 单个对象拷贝
            targetList.add(t);
        }

        return targetList;
    }
}
